Internal Storage
Der Internal Storage ist eine eingebettete SQLite-Datenbank, die jedem 42°OS-Konto zur Verfügung steht. Workflows können über den Internal Storage Agent Daten lesen und schreiben — ohne externe Datenbankverbindung, ohne Credentials, ohne Setup.
Typische Einsatzfälle:
- Extrahierte Dokumentdaten strukturiert ablegen (Rechnungen, Bestellungen, Lieferscheine)
- Zustandsinformationen zwischen Workflow-Abschnitten speichern
- Mapping- und Lookup-Tabellen verwalten
- Gedächtnis für lernfähige Workflows aufbauen
Tabellen anlegen und verwalten
Tabellen werden nicht im Workflow selbst angelegt, sondern über den Internal-Storage-Bereich in der Plattform-Oberfläche.
Tabelle erstellen
Im Internal-Storage-Bereich befindet sich ein Texteingabefeld, in das du ein SQL-CREATE TABLE-Statement eingibst:
CREATE TABLE bestellungen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
dokument_id TEXT,
lieferant TEXT,
bestelldatum TEXT,
status TEXT DEFAULT 'neu',
erstellt_am TEXT DEFAULT (datetime('now'))
);
📸 Screenshot: [Platzhalter — Internal-Storage-Bereich: Texteingabefeld mit CREATE-Statement]
Nach dem Absenden erscheint die neue Tabelle in der Tabellenliste.
Tabellen einsehen
Alle vorhandenen Tabellen sind als Liste aufgeführt. Per Klick auf einen Listeneintrag kannst du:
- Die Spalten der Tabelle einsehen (Name, Datentyp)
- Die Einträge der Tabelle durchblättern
📸 Screenshot: [Platzhalter — Tabellenliste im Internal-Storage-Bereich]
📸 Screenshot: [Platzhalter — Spaltenansicht und Einträge einer Tabelle]
Der Internal Storage Agent
Der Internal Storage Agent ist der einzige Weg, aus einem Workflow heraus auf den Internal Storage zuzugreifen. Es gibt keinen getrennten Read- und Write-Agent — die Unterscheidung erfolgt allein durch das SQL-Statement.
Konfiguration
In der Agent-Konfiguration wird direkt ein SQL-Statement eingegeben. Liquid Templating ist in SQL-Statements vollständig unterstützt — du kannst Werte aus der eingehenden Nachricht direkt in die Abfrage einsetzen.
Schreiben (INSERT):
INSERT INTO bestellungen (dokument_id, lieferant, bestelldatum, status)
VALUES ('{{ dokument_id }}', '{{ lieferant_name }}', '{{ bestelldatum }}', 'extrahiert');
Lesen (SELECT):
SELECT dokument_id, lieferant, bestelldatum, status
FROM bestellungen
WHERE dokument_id = '{{ dokument_id }}';
Aktualisieren (UPDATE):
UPDATE bestellungen
SET status = 'verarbeitet'
WHERE dokument_id = '{{ dokument_id }}';
📸 Screenshot: [Platzhalter — Internal Storage Agent: SQL-Statement in der Konfiguration]
Ausgabe
- SELECT-Abfragen geben das Ergebnis als JSON-Array unter dem Schlüssel
resultin der Nachricht aus. Jede Zeile wird als Objekt mit den Spaltennamen als Schlüssel dargestellt. - INSERT/UPDATE/DELETE geben keine Datenzeilen zurück. Die Nachricht wird mit einem Bestätigungsstatus weitergeleitet.
SQLite-Besonderheiten
Der Internal Storage basiert auf SQLite. Einige Punkte die sich von anderen Datenbanken unterscheiden:
| Thema | SQLite-Verhalten |
|---|---|
| Datentypen | Flexibel — SQLite erzwingt Typen nicht strikt. TEXT, INTEGER, REAL sind die gängigsten. |
| Autoincrement | INTEGER PRIMARY KEY AUTOINCREMENT für automatische IDs |
| Datumsformat | Kein nativer Datumstyp. Datumsangaben als TEXT im Format YYYY-MM-DD oder YYYY-MM-DDTHH:MM:SS speichern. |
| Groß-/Kleinschreibung | LIKE ist standardmäßig case-insensitive für ASCII. Für konsistentes Verhalten LOWER() verwenden. |
| Aktuelle Zeit | datetime('now') statt NOW() oder GETDATE() |
| Boolean | Kein nativer Boolean-Typ. 0 und 1 als INTEGER verwenden. |
Wann den Internal Storage nutzen?
| Situation | Empfehlung |
|---|---|
| Extrahierte Daten für spätere Workflow-Schritte sichern | Internal Storage |
| Zustand zwischen modularen Workflow-Abschnitten teilen | Internal Storage |
| Lookup- oder Mapping-Tabelle verwalten | Internal Storage |
| Daten in ein externes ERP/CRM schreiben | Database Agent |
| Große Datenmengen oder komplexe Abfragen | Database Agent (externe DB) |
🔗 Vertiefung: Zustandsnormalisierung durch SQL-Persistenz erklärt das Entwurfsmuster hinter der SQL-Persistenz.
🔗 Vertiefung: SQL — Daten abfragen und schreiben beschreibt die SQL-Syntax im Detail.